package com.cn.wanxi;

import com.cn.wanxi.model.CompanyModel;
import com.cn.wanxi.model.ProductModel;
import org.omg.CORBA.portable.ValueOutputStream;

public class MyHelp {
    /**
     * 2021-8-31
     * 后台目录结构
     * com.cn.wanxi    com.hk.wanxi    com.jp.wanxi
     * 国际,国内,公司名称
     * 创建文件夹   区分代码块
     * dao
     * model   放第一阶段的对象属性（需要将第一阶段按照面向对象的形式，抽取对象）
     * service
     * servlet
     * util
     *
     */
    /**
     * 区分对象？通过功能区分，通过描述方式,以最小单位去抽象出对象
     * 对象里面包含什么内容？
     * package com.cn.wanxi.model;//包，路径
     * public class CompanyModel {
     * }
     * 定义类：
     * 1.public 修饰符
     * 2.class  定义类
     * 3.CompanyModel 类名
     * ？为什么package，和public，class要变颜色？ 关键字
     * 1.关键字全小写
     * 2.其他命名的时候不能和关键字一样
     * 3.所有包名全部小写
     * 4.类名 大驼峰命名  每个单词的第一个字母大写
     * -------------------------------------------------------
     * 类 除了包含包，类名 还有 属性，方法，构造方法（反射）
     * "com.cn.wanxi.model.CompanyModel"
     * 定义属性：怎么来定义？为什么要有属性？什么是属性？
     * 如果定义了一个类，什么都不写，表示 抽象出一个对象，并不是一个具体的对象
     * 定义一个对象，区分一个对象，必须对对象进行描述！
     * 对象的特征？
     * 对象的行为？
     */
    /**
     * java 数据类型？
     * 基本类型   引用类型
     * 基本类型：8种  （4种   整型4   浮点型2  字符型1 布尔型1）
     * 整型类型：  byte      short      int      long
     * 字节：      1             2       4           8    一个字节 有8给bit位
     * byte:  1 111 1111             第一位 0表示正数，1表示负数
     * 取值范围： -2^7 ----2^7-1
     * 默认值：     0           0       0           0
     * 浮点型： float   double
     * 字节：      4       8
     * 取值范围：-2^31---2^31-1
     * 默认值 ：0.0
     * ------------------------------------------------------------
     * java用货币表示：BigDecimal
     * 0.1+0.1=?
     * 1.1+0.1=?
     * ----------------------------
     * -----补码，反码，原码的区别？
     * -----二进制和十进制的相互转换？
     * byte： byte 数据类型是8位、有符号的，以二进制补码表示的整数；
     * 取值范围：
     * 字符？char
     * 字节： 2
     * ''
     * 布尔值：boolean  true  false
     * 基本---包装类
     * 写出所有基本类型的包装类
     * char   Character
     * int  Integer
     * byte   Byte
     *
     */
    /**
     * 装箱 拆箱
     * 基本数据类型转换位包装类型  装箱
     * 包装类型转换位基本类型  拆箱
     */
    /**
     * 数据类型相互转换
     * 自动转换和强制转换
     * 向上转型和向下转型
     */
    /**
     * 运算符
     * 赋值运算符
     * 算术运算符  +  — * /  %
     * 逻辑运算符
     * 条件运算符  ?: 三元运算符  三目运算符
     * 关系运算符  > < !=
     * 位运算符
     */
    /**
     * 引用类型（除了基本类型  都是引用类型）
     * 大概包括哪些？
     * 类   抽象类  接口  注解  枚举
     */
    /**
     * 方法：行为  动作  执行代码的地方
     * 一个完整的方法怎么定义？
     * public static String main(String[] args) throws Exception {
     * public 权限修饰符   访问修饰符
     * static  特征修饰符   非访问修饰符
     * String   返回数据类型 void没有返回值
     * main 方法名
     * String[] args 参数
     * throws Exception 异常处理
     * { return "";} 代码执行体
     * return "";返回值
     */
    /**
     * 权限修饰符？访问权限！访问修饰符
     * default (即默认，什么也不写）: 在同一包内可见，不使用任何修饰符。使用对象：类、接口、变量、方法。
     *
     * private : 在同一类内可见。使用对象：变量、方法。 注意：不能修饰类（外部类）
     *
     * public : 对所有类可见。使用对象：类、接口、变量、方法
     *
     * protected : 对同一包内的类和所有子类可见。使用对象：变量、方法。 注意：不能修饰类（外部类）。
     * 权限修饰符有哪些？
     * public，private，protected，默认不写
     *
     * public和默认不写  可以修饰类，接口，方法属性
     * private和默认不写 只能修饰属性和方法
     * 注意：
     *      1.如果要在任何地方都需要访问用public
     *      2.如果只在当前包访问 用默认不写
     *      3.如果需要子类访问 用protected
     *      4.如果只需要自己访问 用private
     */
    /**
     * 重写
     * 子类和父类：方法名相同，参数相同
     */
    /**
     * 重载
     * 子类和父类  当前类
     * 方法名相同 ，参数不同（参数类型参数个数）
     *
     */
    /**
     * 特征修饰符  非访问修饰符
     * static 修饰符，用来修饰类方法和类变量。
     * final 修饰符，用来修饰类、方法和变量，
     *      final 修饰的类不能够被继承，
     *     final 修饰的方法不能被继承类重新定义，
     *     final 修饰的变量为常量，是不可修改的。
     * abstract 修饰符，用来创建抽象类和抽象方法。
     * synchronized 和 volatile 修饰符，主要用于线程的编程。
     * ----------------------------
     * static 为什么要用静态修饰方法和变量？
     * 什么情况下用？只有一个实例  非静态调用 new 类().方法/属性
     * 工具类？经常使用的类  用静态属性和方法  通过类名.方法/属性
     */
    /**
     * 构造方法
     * 什么是构造方法？
     * 构造方法的目的？
     * 什么情况下构造方法必须写private?写单例模式的目的  不能创建多个实例化对象
     * 构造方法是否有返回值?
     * 构造方法是有返回值，是对象本身
     * -----------------
     * 创建构造方法的目的就是为了调用当前对象的属性和方法
     * void  就是没有返回值
     * 构造方法和类名一样
     */
    /**
     * 代码块  静态代码块
     * 定时器：
     * 他们在什么情况下运行?
     * 代码块  静态代码块和构造方法的执行顺序？
     * 首先是静态代码块  代码块  按照先后顺序执行，最后才是构造方法
     */
    /**
     * 命名规范：标识符
     * 属性：小驼峰
     * 方法：小驼峰
     * 类名：大驼峰
     * 包：全小写
     * 常量：全大写
     * 类名：后面跟包名
     * 注意：
     *      1.名字 见名知意  不要怕长   findByUsernameAndPassword  fbyap
     *      2.写注释：类注释  方法注释  属性注释
     *      Java注释：
     *          1.行注释  //
     *          2.文本注释  /** / 一般情况下是对类和方法注释
     *          3.多行注释/*** /  一般在方法里面
     *
     *
     */
    // 行注释
    /**
     * 文本注释
     */
    /*
    多行注释
     */

    /**
     * 项目实践 servlet框架+jsp模板（thymeleaf，freemarker）
     * 将所有需要改变的数据保存到后台，所有页面的数据必须通过后台传递到jsp页面
     * ----------所以，不能直接访问jsp页面
     * 1.提取model对象
     * 2.将html转换为jsp   jsp的目的就是为了省略js（去掉js）
     * 3.编写后台的页面控制层 servlet 一个页面对应一个jsp（主页面）
     *          1)需要导入servlet的jar包
     *          2）创建HomeServlet
     *          3）继承HttpServlet
     *          4)重写doGet方法--doget和dopost的区别？ servlet的生命周期？
     *          5)编写后台提供给前端的接口@WebServlet("/home")
     *          6) 页面跳转 (页面转发和页面跳转的区别？)
     * 4.编写service服务逻辑层   封装页面需要的数据
     *          难点：
     * 5.编写dao层   英文服务逻辑层的数据来源于dao层
     *
     */
    /**
     * 新闻信息---------
            * 1.model
     * 2.servlet
     * 3.jsp
     * 4.dao
     * 5.service
     */

    MyHelp() {
        System.out.println("构造方法");
    }

    {
        System.out.println("代码块");
    }

    static {
        System.out.println("静态代码块");
    }

    private ProductModel productModel = new ProductModel();

    //    String aa(){
//        return "";
//    }

    public static void main(String[] args) {

    }

//    public static void main(String[] args) {

//        char c = 50;//2

//        i = c;
//        c = (char) i;
//        int i = 0;//4
//        int b = 1;
//        boolean bb = false;
//        if (i > b) {
//            bb = true;
//        } else {
//            bb = false;
//        }
//        String bbb = i > b ? "a" : "b";//三元运算符
//        运算符？
//       int bb=i+++++b;
//    }
//    public static void main(String[] args) throws Exception {
//new Persion("乔布斯") 单例模式 只有一个实例
//        System.out.println(new MyHelp().c);

//    }
}
